home *** CD-ROM | disk | FTP | other *** search
/ Nebula 2 / Nebula Two.iso / SourceCode / MiscKit1.7.1 / MiscKitArchive.mbox / mbox / 000242_misckit-reques…aska.et.byu.edu_Wed Jul 6 14:00:28 1994.msg < prev    next >
Internet Message Format  |  1994-10-30  |  5KB

  1. Return-Path: <misckit-request@alaska.et.byu.edu>
  2. Received: from alaska.et.byu.edu by darth.byu.edu (NX5.67d/NX3.0M)
  3.     id AA00815; Wed, 6 Jul 94 14:00:18 -0600
  4. Received: from YVAX2.BYU.EDU by alaska.et.byu.edu; Wed, 6 Jul 1994 09:19:36 -0600
  5. Received: from DIRECTORY-DAEMON by yvax.byu.edu (PMDF V4.3-7 #7277)
  6.  id <01HEDQ4O3X0W8Y4WUZ@yvax.byu.edu>; Wed, 6 Jul 1994 09:19:04 MDT
  7. Received: from alaska.et.byu.edu by yvax.byu.edu (PMDF V4.3-7 #7277)
  8.  id <01HEDQ4I36688Y4XS5@yvax.byu.edu>; Wed, 6 Jul 1994 09:18:55 MDT
  9. Received: from acs1.byu.edu by alaska.et.byu.edu; Wed, 6 Jul 1994 09:13:48 -0600
  10. Received: from DIRECTORY-DAEMON by yvax.byu.edu (PMDF V4.3-7 #7277)
  11.  id <01HEDPI97AW09LUXZU@yvax.byu.edu>; Wed, 6 Jul 1994 09:01:46 MDT
  12. Received: from NeXT.COM by yvax.byu.edu (PMDF V4.3-7 #7277)
  13.  id <01HEDPI528808Y4XM0@yvax.byu.edu>; Wed, 6 Jul 1994 09:01:40 MDT
  14. Received: from lemming by oz.NeXT.COM (NX5.67e/NeXT0.1-Aleph-bf)
  15.  id AA10006; Wed, 6 Jul 94 08:00:25 -0700
  16. Received: by lemming.next.com (NX5.67e/NX3.0X) id AA02825; Wed,
  17.  6 Jul 94 08:00:20 -0700
  18. Received: by NeXT.Mailer (1.112.1)
  19. Date: Wed, 06 Jul 1994 08:00:16 -0700
  20. From: Ali Ozer <Ali_Ozer@NeXT.COM>
  21. Subject: Re: Foundation and Misc
  22. To: bruce@trwlasd.com
  23. Cc: misckit@byu.edu
  24. Message-Id: <9407061500.AA10006@oz.NeXT.COM>
  25. Mime-Version: 1.0 (NeXT Mail 3.3 v112.1)
  26. Content-Type: text/plain
  27. Content-Transfer-Encoding: 7BIT
  28.  
  29. >I thought about this, and I don't like any of the real solutions.
  30. >Don's comment about NSString being a class cluster raises
  31. >some interesting questions. How do you affect the cluster without
  32. >having to subclass each piece? What about private API? Does
  33. >it (private API) make use of methods that you would want
  34. >to override (in order to complete the subclass responsibilities)?
  35. >What the heck do you do?
  36.  
  37. Subclassing a class cluster isn't difficult, provided the primitives are
  38. clearly documented. In the case of the foundation clusters, they are. (For instance, NSString has two primitives, length and characterAtIndex:.  For performance it's recommended that you also override getCharacters:range:. NSMutableString adds another primitive.)
  39.  
  40. In your subclass of NSString, you provide your own custom implementation,
  41. and implement these three methods.  Or, instead of providing your own custom implementation, you may just point to an instance of NSString, and forward
  42. these three methods. You may also choose to implement other NSString
  43. methods. Finally, you implement any init methods you need; in the case of
  44. NSString the only init method you inherit is the abstract one, init.
  45.  
  46. The summer issue of NXApp has an article about subclassing class clusters.
  47.  
  48. >There's another disadvantage: You can't subclass them [categories],
  49. >nor can you access any overriden methods. The latter is not as
  50. >likely given that you cannot add state (ivars) in Categories.
  51.  
  52. My proposal was to use categories to add additional behavior to the abstract
  53. NSString class. I'm not proposing overriding methods in NSString (this is not legal anyway). One you've added behavior like this to NSString, then all subclassers of NSString get those methods. A subclasser may override them, while still accessing the overridden implementations. So I don't see a disadvantage here.
  54.  
  55. Ali
  56.  
  57.  
  58. Begin forwarded message:
  59.  
  60. From: Bruce McKenzie <bruce@trwlasd.com>
  61. Date: 1994-07-05 13:33:54 -0700
  62. To: Ali_Ozer@next.com (Ali Ozer)
  63. Subject: Re: Foundation and Misc
  64. Cc: misckit@byu.edu
  65. content-transfer-encoding: 7BIT
  66.  
  67. > From: Ali_Ozer@NeXT.COM (Ali Ozer)
  68.  
  69. > Another option is to add the rich set of MiscString methods to NSString via> categories. The advantage of this approach would be that MiscString and
  70. > NSString would be interchangeable, and any NSString, even one created and
  71. > returned by the kit would respond to MiscString methods, avoiding consumers> from having to create MiscStrings from NSStrings all over the place. Also
  72. > you would not have to deal with Unicode issues.
  73. >
  74. > I can think of two disadvantages to this:
  75. > 1. Performance: These methods would have to go through NSString's primitives
  76. > 2. You lose any state MiscString has which NSString doesn't
  77.  
  78. There's another disadvantage: You can't subclass them, nor can you access
  79. any overriden methods. The latter is not as likely given that you cannot add state (ivars) in Categories.
  80.  
  81. I thought about this, and I don't like any of the real solutions. Don's
  82. comment about NSString being a class cluster raises some interesting
  83. questions. How do you affect the cluster without having to subclass each
  84. piece? What about private API? Does it (private API) make use of methods
  85. that you would want to override (in order to complete the subclass
  86. responsibilities)? What the heck do you do?
  87.  
  88. ---
  89. Bruce McKenzie (spuds@netcom.com, NeXTMail welcome)
  90. Atlas Software Ventures, Inc.
  91. PO Box 1299, Santa Clara, CA 95052-1299
  92. 800/278-9909 (ASV-9909)
  93. *** Software Development, specializing in NEXTSTEP ***
  94. ---